package com.hui.service;

import com.hui.bean.RoomBean;

import java.util.List;

/**
 * 房间相关业务层接口
 *
 */
public interface IRoomService {

    /**
     * 得到所有的房间信息
     * @return  返回装有所有房间对象的list集合
     */
    List<RoomBean> getAllRooms();

    /**
     *
     * 通过条件查询相关
     * @param roomAddress 房间地址
     * @param roomStatus 房间状态 正常/损坏
     * @param availableLive 是否可住 (是否满员)  0：房间满员  1：房间人数未满
     * @param roomType  房间类型 男寝室/女寝室
     * @return 返回装有相关条件的房间对象的list集合
     */
    List<RoomBean> findRoomsByCondition(String roomAddress, String roomStatus, String availableLive, String roomType);

    /**
     * 添加一个房间
     * 如果添加成功，返回true
     * 如果添加失败，返回false
     * @param roomBean  带数据的房间信息对象
     * @return 是否添加成功
     */
    boolean addRoom(RoomBean roomBean);

    /**
     * 删除一个房间
     * 如果这个房间还有人住，直接返回false
     * 如果没有人住，直接删除该房间并返回true
     * @param roomId
     * @return 是否删除成功
     */
    boolean removeRoomByRoomId(int roomId);

    /**
     * 查询该房间下的信息
     * 三表联查，房间，学生，班级
     * 此房间入住的所有学生以及每个学生所在的班级
     *
     * @param roomId
     * @return 返回该房间的信息
     */
    RoomBean showRoomInfo(int roomId);

    /**
     *
     * 通过房间类型得到能够入住的房间
     * @param roomType 房间类型
     * @return 符合条件的房间列表
     */
    List<RoomBean> getCanInRoomsByRoomType(String roomType);

    /**
     * t通过房间地址找到该房间的信息
     * @param roomAddress
     * @return
     */
    RoomBean getRoomByRoomAddress(String roomAddress);
    /**
     * t通过房间地址找到该房间是否存在
     * @param roomAddress
     * @return
     */
    boolean isExitRoomByRoomAddress(String roomAddress);


    /**
     * 通过房间id从当前房间里面移除一个学生，调一次减一个
     * @param roomId
     * @return
     */
    int removeStudentFromRoomByRoomId(int roomId);

    /**
     * 更新房间的状态到设备损坏
     * @param roomId 房间id
     * @return 是否更新成功
     */
    int updateRoomStatusToEorror(int roomId);

    /**
     * 更新房间的状态到正常
     * @param roomId 房间id
     * @return 是否更新成功
     */
    int updateRoomStatusToNormal(int roomId);



}
